const authService = require('./auth.service')
const { createToken } = require('../../utils/token')

class AuthController {

  // 普通登录
  async login(ctx, next) {
    try {
      // 1.获取用户信息
      const { sno, password } = ctx.request.body
      // 2.登录操作
      const result = await authService.login(sno, password)
      // 3.生成token
      if (result['length'] === 1) {
        const token = createToken(result[0])
        ctx.body = { ...result[0], token }
      } else {
        ctx.throw(500, "账号/密码错误")
      }
    } catch (error) {
      ctx.throw(500, error.sqlMessage || error || "生成token失败")
    }
  }

  // token登录
  async authLogin(ctx, next) {
    try {
      // 1.获取信息
      const { id } = ctx.user
      // 2.登录操作
      const result = await authService.authLogin(id)
      // 3.生成token
      if (result['length'] === 1) {
        const token = createToken(result[0])
        ctx.body = { ...result[0], token }
      } else {
        ctx.throw(403, "token登录失败")
      }
    } catch (error) {
      ctx.throw(500, error.sqlMessage || error || "生成token失败")
    }
  }

}

module.exports = new AuthController()
